      THIS PROGRAM GENERATES A POWDER SPECTRUM FOR A SPIN 1/2 SYSTEM WITH
TWO METAL NUCLEUS(CALCULATED TO SECOND ORDER) AND FOUR SUPER-HYPERFINE
SPINS FOR WHICH THERE CAN BE MORE THAN ONE EQUIVALENT NUCLEUS. ALL
HYPERFINE MATRICES CAN BE ROTATED IN ANY DIRECTION.  THE THREE EULER
ANGLES ARE READ IN THE ORDER ALPHA,BETA,GAMMA.  THE EULER ANGLES CONFORM
TO THE CONVENTION OF ROSE.  SPECTRA ARE INTEGRATED USING A TWO DIMENSIONAL
4-POINT GAUSS-POINT INTEGRATION.
      	PROGRAM INCLUDES STRAIN IN G AND THE TWO PRIMARY HYPERFINE TENSORS
CALCULATED TO FIRST ORDER.
      ACKNOWLEDGEMENTS SHOULD BE MADE TO MARK NILGES AND THE ILLINOIS EPR
RESEARCH CENTER.
      TYPICAL DATA FILE (SAMPLE6.DAT); THIS IS FOR A RHOMBIC SYSTEM WITH NUCLEAR
SPIN 3/2, I.E. COPPER DIMER:

 9.05480
   100.0     0.8     9.0
      30       6       2
  2605.0  3605.0    1024
     1.5     0.0     0.0     0.0     0.0     0.0
               0       1       1       1       1
 2.02159 2.01712 2.08479   69.20
 -118.16 -123.92 -494.08     0.0     0.0     0.0
    0.00    0.00    0.00     0.0     0.0     0.0
    0.00    0.00    0.00     0.0     0.0     0.0
    0.00    0.00    0.00     0.0     0.0     0.0
    0.00    0.00    0.00     0.0     0.0     0.0
    0.00    0.00    0.00     0.0     0.0     0.0
    8.94   15.65   10.62       L       1    0.00
   0.052   0.055   0.061   1.000   1.000   1.000
   0.000   0.000  -0.063   0.000   0.000   0.000
     1.5     0.0     0.0     0.0     0.0     0.0
               0       1       1       1       1
 2.02159 2.01712 2.08479   30.80
 -126.58 -132.76 -529.31     0.0     0.0     0.0
    0.00    0.00    0.00     0.0     0.0     0.0
    0.00    0.00    0.00     0.0     0.0     0.0
    0.00    0.00    0.00     0.0     0.0     0.0
    0.00    0.00    0.00     0.0     0.0     0.0
    0.00    0.00    0.00     0.0     0.0     0.0
    8.94   15.65   10.62       L       1    0.00
   0.052   0.055   0.061   1.000   1.000   1.000
   0.000   0.000  -0.063   0.000   0.000   0.000
 VARIBLES=11 ITER=000
 W(1,1)=    8.94  RANGE=   5.00
 W(2,1)=   15.65  RANGE=   5.00
 W(3,1)=   10.62  RANGE=   5.00
 G(1,1)= 2.02159  RANGE=0.01000
 G(2,1)= 2.01712  RANGE=0.01000
 G(3,1)= 2.08479  RANGE=0.01000
 A(1,1)= -118.16  RANGE=  10.00
 A(2,1)= -123.92  RANGE=  10.00
 A(3,1)= -494.08  RANGE=  10.00
 X(3,1)=   0.061  RANGE=  0.050
 Y(3,1)=  -0.063  RANGE=  0.050
 EQUATIONS=09
 G(1,2)=G(1,1)
 G(2,2)=G(2,1)
 G(3,2)=G(3,1)
 W(1,2)=W(1,1)
 W(2,2)=W(2,1)
 W(3,2)=W(3,1)
 A(1,2)=A(1,1)* 1.07130    
 A(2,2)=A(2,1)* 1.07130    
 A(3,2)=A(3,1)* 1.07130    


THE DATA FILE CAN BE BROKEN INTO THREE SECTIONS:

FIRST SECTION:

The first section contains the routine simulation parameters.
(Please note formatting, no free formatting here.)

THE CORRESPONDING INPUT PARAMETERS ARE:

       NU                                                     FORMAT(F8.0)
    FACTR      FACT    CUTOFF                                 FORMAT(3F8.0)
      NTH       NPH       NSI                                 FORMAT(3I8)
      HLW       HLH      NTOT                                 FORMAT(2F8.0,I8)
 SPINA(1)  SPINB(1)  SPINC(1)  SPIND(1)  SPINE(1)  SPINF(1)   FORMAT(6F8.0)
                       NEB(1) NEC(1) NED(1) NED(1)            FORMAT(X16,4I8)
   G(1,1)    G(2,1)    G(3,1)   TINT(1)                       FORMAT(4F8.0)
   A(1,1)    A(2,1)    A(3,1) ANGA(1,1) ANGA(2,1) ANGA(3,1)   FORMAT(6F8.0)
   B(1,1)    B(2,1)    B(3,1) ANGB(1,1) ANGB(2,1) ANGB(3,1)   FORMAT(6F8.0)
   C(1,1)    C(2,1)    C(3,1) ANGC(1,1) ANGC(2,1) ANGC(3,1)   FORMAT(6F8.0)
   D(1,1)    D(2,1)    D(3,1) ANGD(1,1) ANGD(2,1) ANGD(3,1)   FORMAT(6F8.0)
   E(1,1)    E(2,1)    E(3,1) ANGE(1,1) ANGE(2,1) ANGE(3,1)   FORMAT(6F8.0)
   F(1,1)    F(2,1)    F(3,1) ANGF(1,1) ANGF(2,1) ANGF(3,1)   FORMAT(6F8.0)
   W(1,1)    W(2,1)    W(3,1)        LS    IDERIV       WL    FORMAT(F8.0,7X,A1,I8,I8)
   X(1,1)    X(2,1)    X(3,1)      ECGA      ECGB     ECAB    FORMAT(9F8.0)
   Y(1,1)    Y(2,1)    Y(3,1)   Z(1,1)    Z(2,1)    Z(3,1)    FORMAT(9F8.0)

WHICH ARE DEFINED:

---- NU = MICROWAVE FREQUENCY IN GHZ.
---- FACTR = VERTICAL SCALING; FULL SCALE = 100.0.
---- FACT = NOT USED; SET TO ZERO.
---- CUTOFF = NUMBER OF LINEWIDTHS FROM THE CENTER THE LINESHAPE IS
     CALCULATED.
---- NTH = NUMBER OF INTEGRATION UNITS ALONG THE THETA COORDINATE,
     EACH UNIT IS FOUR UNEQUALLY WEIGHTED POINTS.  
---- NPH = NUMBER OF INTEGRATION UNITS ALONG THE PHI COORDINATE. IF
     NTH AND NPH ARE TOO SMALL EXTRA PEAKS, KNOWN AS "GRAINING" WILL OCCUR.
---- NSI = NUMBER OF INEQUIVALENT SPECIES.
---- HLW = START FIELD IN GAUSS.
---- HLH = END FIELD IN GAUSS.
---- NTOT = NUMBER OF POINTS IN SPECTRUM.
---- SPINA(J) = NUCLEAR SPIN FOR NUCLEI A, CALCULATED TO SECOND ORDER
---- SPINB(J) = NUCLEAR SPIN FOR NUCLEI B, CALCULATED TO SECOND ORDER
---- SPINC(J) = NUCLEAR SPIN FOR NUCLEI C, CALCULATED TO FIRST ORDER
---- SPIND(J) = NUCLEAR SPIN FOR NUCLEI D, CALCULATED TO FIRST ORDER
---- SPINE(J) = NUCLEAR SPIN FOR NUCLEI E, CALCULATED TO FIRST ORDER
---- SPINF(J) = NUCLEAR SPIN FOR NUCLEI F, CALCULATED TO FIRST ORDER
---- NEC(J) = NUMBER OF EQUIVALENT NUCLEI FOR SPINC
---- NED(J) = NUMBER OF EQUIVALENT NUCLEI FOR SPIND
---- NEE(J) = NUMBER OF EQUIVALENT NUCLEI FOR SPIND
---- NEF(J) = NUMBER OF EQUIVALENT NUCLEI FOR SPIND
---- G(1,J) = GX FOR THE JTH SPECIES
---- G(2,J) = GY
---- G(3,J) = GZ
---- TINT(J) = RELATIVE WEIGHING FACTOR FOR THE JTH SPECIES.
---- A(1,J) = FIRST PRINCIPAL VALUE OF THE HYPERFINE TENSOR (JTH SPECIES)
---- A(2,J) = SECOND PRINCIPAL VALUE OF THE HYPERFINE TENSOR FOR SPINA
---- A(3,J) = THIRD PRINCIPAL VALUE OF THE HYPERFINE TENSOR
---- ANGA(1,J) = EULER ANGLE ALPHA RELATING THE PRINCIPAL AXES OF THE
     HYPERFINE TENSOR TO G TENSOR
---- ANGA(2,J) = EULER ANGLE BETA
---- ANGA(3,J) = EULER ANGLE GAMMA
---- B(1,J) = FIRST PRINCIPAL VALUE OF THE HYPERFINE TENSOR (JTH SPECIES)
---- B(2,J) = SECOND PRINCIPAL VALUE OF THE HYPERFINE TENSOR FOR SPINB
---- B(3,J) = THIRD PRINCIPAL VALUE OF THE HYPERFINE TENSOR
---- ANGB(1,J) = EULER ANGLE ALPHA FOR SPINB
---- ANGB(2,J) = EULER ANGLE BETA
---- ANGB(3,J) = EULER ANGLE GAMMA
---- C(1,J) = FIRST PRINCIPAL VALUE OF THE HYPERFINE TENSOR (JTH SPECIES)
---- C(2,J) = SECOND PRINCIPAL VALUE OF THE HYPERFINE TENSOR FOR SPINC
---- C(3,J) = THIRD PRINCIPAL VALUE OF THE HYPERFINE TENSOR
---- ANGC(1,J) = EULER ANGLE ALPHA FOR SPINC
---- ANGC(2,J) = EULER ANGLE BETA
---- ANGC(3,J) = EULER ANGLE GAMMA
---- D(1,J) = FIRST PRINCIPAL VALUE OF THE HYPERFINE TENSOR (JTH SPECIES)
---- D(2,J) = SECOND PRINCIPAL VALUE OF THE HYPERFINE TENSOR FOR SPIND
---- D(3,J) = THIRD PRINCIPAL VALUE OF THE HYPERFINE TENSOR
---- ANGD(1,J) = EULER ANGLE ALPHA FOR SPIND
---- ANGD(2,J) = EULER ANGLE BETA
---- ANGD(3,J) = EULER ANGLE GAMMA
---- ETC for SPINE and SPINF
---- W(1,J) = LINEWIDTH ALONG GX (JTH SPECIES) IN MHZ; HALF WIDTH AT HALF
     HEIGHT.
---- W(2,J) = LINEWIDTH ALONG GY
---- W(3,J) = LINEWIDTH ALONG GZ
---- LS = LINESHAPE:  
     L = LORENTZIAN WITH HALF-WIDTH-AT-HALF-HEIGHT IN MHZ 
     G = GAUSSIAN WITH THE PEAK-TO-PEAK LINEWIDTH IN GAUSS.
---- WL IF MAIN LINESHAPE IS GAUSSIAN ADDS AN ADDITIONAL LORENTZIAN COMPONENT OF
      LINEWIDTH (MHZ) (i.e. voight lineshape)
---- IDERIV = 0 FOR ABSORPTION, 1 FOR FIRST DERIVATIVE, 2 FOR SECOND
     DERIVATIVE
---- DELG(1,J) = FRACTIONAL STRAIN OF SHIFT OF GX FROM THE FREE ELECTRON G
---- DELG(2,J) = FRACTIONAL STRAIN OF SHIFT OF GY FROM THE FREE ELECTRON G
---- DELG(3,J) = FRACTIONAL STRAIN OF SHIFT OF GZ FROM THE FREE ELECTRON G
---- ECGA = IS THE CORRELATION IN STRAIN BETWEEN THE g TENSOR AND THE A HYPERFINE TENSOR(-1 to +1)
---- ECGB = IS THE CORRELATION IN STRAIN BETWEEN THE g TENSOR AND THE B HYPERFINE TENSOR(-1 to +1)
---- ECAB = IS THE CORRELATION IN STRAIN BETWEEN THE A AND THE B HYPERFINE TENSOR (-1 to +1)
---- DELA(1,J) = FRACTIONAL STRAIN OF THE FIRST PRINCIPAL VALUE OF THE A HYPERFINE TENSOR 
---- DELA(2,J) = FRACTIONAL STRAIN OF THE SECOND PRINCIPAL VALUE OF THE A HYPERFINE TENSOR
---- DELA(3,J) = FRACTIONAL STRAIN OF THE THIRD PRINCIPAL VALUE OF THE A HYPERFINE TENSOR
---- DELB(1,J) = FRACTIONAL STRAIN OF THE FIRST PRINCIPAL VALUE OF THE B HYPERFINE TENSOR 
---- DELB(2,J) = FRACTIONAL STRAIN OF THE SECOND PRINCIPAL VALUE OF THE B HYPERFINE TENSOR
---- DELB(3,J) = FRACTIONAL STRAIN OF THE THIRD PRINCIPAL VALUE OF THE B HYPERFINE TENSOR

DELG(I,J), the fractional strain for gi is defined as the (delta gi)/(gi-ge), where delta gi is
the variance or strain in gi 
DELA(I,J), the fractional strain for Ai is defined as the (delta Ai)/Ai, where delta Ai is
the variance or strain in Ai 

THE SECOND SECTION:


The second section contains the input parameters to be fitted:

 VARIBLES=n ITER=m GRAPHOFF(optional) RESTART(optional)
 M(i,j)= x  RANGE= y
.
. 
 N(k,l)= u  RANGE=  v

VARIBLES (note sp) is the number of parameters to be fitted (maximum of 21).

ITER is the maximum number of iterations (maximum of 99).  Minimum number of 
iterations will be always be VARIBLES+1 unless ITER is set to 0 which will give 
only a single iteration. 

GRAPHOFF: including this keyword will turn off the graphical display.  Useful when
debugging or when running program in background.

RESTART start the search using the the previous gradient vectors.  The file restart.dat
must be available from a previous run and no change in the input data file should be 
made. 

A file named ARC.DAT is created and is copy of the input data file updated with the final
fitting parameters.  This can be used (renamed) to create a new starting point or saved as
a record of the best fitting.

M corresponds to the tensor and i to the principal tensor component (1 to 3).
j points to the species number. 
Estimating M(i,j) directly from the spectrum as accurately as possible will save
much time in the long run.  Using crude estimates for M(i,j) will greatly increase
the convergence time. Values of M are g, A, B, C, D, E, F, W, X, Y and Z. Using W allows the
linewidths to be varied.  Note: if a parameter is listed in this section to be fitted, any value
listed in the first section is overridden. S(i,j) and T(i,j) each correspond to the ith 
Euler angle for the the A tensor and B tensor for the jth species, respectively.

For the variation of the strain parameters the matrix symbols, X, Y, Z, are used for DELG,
DELA, and DELD, respectively. (NOTE: This calculation of strain broadening assumes a first
order broadening and is such valid only when the strain in a spin hamiltonian parameter is
smaller than the parmeter.

RANGE corresponds to the search width over which M(i,j) will be varied and as such
determines the step size.  It is important to set the RANGE large to prevent getting
trapped on a local minimum.  Making RANGE to large can also slow things down and for
parameters that are vary well set, the RANGE should be set as small as possible.


THE THIRD SECTION:

The third section contains the restraints which are of the form:

EQUATIONS=n

M(i,j)=M(k,j)+OFFSET
.
.
N(i,j)=N(k,j)*MULTIPLIER


One can now use either an offset or a multiplier, but not both. For this program j corresponds
to the species number.  M is a matrix as listed above (g, A, B, C, D, E, F, S, T, W, X, Y, Z).  Using 
restraints can reduce the number of variable.For example if the A hyperfine matrix is axial, 
one would set A(1,1)=A(2,1).




FORMAT OF OUTPUT DATA FILE (SEE HPOW.SIM):

FIRST LINE:
---- NTOT - NUMBER OF POINTS, FACT - SCALING FACTOR ,PL - 0
      FORMAT(I8,F8.4,F8.2)

SECOND LINE:
---- HLW - STARTING FIELD (GAUSS), HLH - ENDING FIELD, NU - FREQUENCY
      FORMAT(2F8.1,F8.4)
NEXT NTOT/6 LINES:
---- SPECTRAL DATA POINTS
      FORMAT(10I6)

LAST 3+NSI(2+NSP) LINES:
---- SIMULATION PARAMETERS
      FORMAT - HOLLERITH

FORMATS(3) OF INPUT EXPERIMENTAL FILE:

Three formats are possible:

First, any file with the above output format.

Two, an "EW" file (Scientific Software Systems) with an .FLS extension which must be included
when inputted.

Three, a simple list of data points, where the first line is the number of points, n, and the
next n lines list the n points.  This file must have a .smp extension, which must be included
when inputted.


